// 导入cooklies做持久化
import { login, getprofile, getUserDetailById } from '@/api/user'
import { getToken, setToken, removeToken } from '@/utils/auth'
import { resetRouter } from '@/router'
export default {
  namespaced: true,
  state: {
    // 定义token值
    // 优先从token中取token
    token: getToken() || '',
    // 定义用户信息函数
    UserInfo: {}
  },
  mutations: {
    // 定义更新token的函数
    updataToken(state, token) {
      state.token = token
      // 存储到cooklies中
      setToken(token)
    },
    // 清除token
    clearToken(state) {
      state.token = ''
      // 清除cooklies中的token
      removeToken()
    },
    // 接收用户信息ajax存储到vuex
    setUserInfo(state, Userinfo) {
      state.UserInfo = Userinfo
    },
    // 清除信息
    clearInfo(state) {
      state.UserInfo = {}
    }
  },
  // 异步获取数据
  actions: {
    // 发送请求实现登录,获取token,存储到vuex中
    async userLogin(context, formdata) {
    //  context是store的实例对象
      console.log(context)
      const res = await login(formdata)
      // 存储到vuex中
      context.commit('updataToken', res.data)
    },
    // 获取用户信息函数
    async getInfo(context) {
      const res = await getprofile()
      console.log(res, '111')
      // 获取用户头像
      const info = await getUserDetailById(res.data.userId)
      console.log(info.data, '22')
      // 同步到mutations中
      context.commit('setUserInfo', { ...res.data, ...info.data })
      // 返回页面级别的权限信息
      return res.data.roles.menus
    },
    logout(context) {
      context.commit('clearToken')
      context.commit('clearInfo')
      // 重置路由
      resetRouter()
    }
  }
}
